package com.littleHan.brushQuestions.web.frontPage.dao;

import com.littleHan.brushQuestions.web.frontPage.pojo.Interesting;
import com.littleHan.brushQuestions.web.start.pojo.DicValue;
import com.littleHan.brushQuestions.web.start.pojo.vo.TopicVo;
import com.littleHan.brushQuestions.web.userCenter.pojo.Announcement;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FrontPageDao {

    /**
     * 根据用户id获取兴趣列表
     * @return 兴趣列表
     */
    List<Interesting> getInterestingByUserId(String userId);

    /**
     * 根据兴趣列表里的学科主键获取题目列表
     * @param list 兴趣列表
     * @return 题目列表
     */
    List<TopicVo> getTopicByObjectId(List<Interesting> list);

    /**
     * 根据题号获取其收藏数量
     * @param topicId 题号id
     * @return
     */
    int getCollectNumByTopicId(String topicId);

    /**
     * 根据题号获取其评论数量
     * @param topicId 题号id
     * @return
     */
    int getCommentNumByTopicId(String topicId);


    /**
     * 用户是否收藏了这道题
     * @param topicId 题的id
     * @param userId 用户id
     * @return
     */
    int userIsCollect(@Param("topicId") String topicId, @Param("userId")String userId);

    /**
     * 获取所有题目
     * @return 题目列表
     */
    List<TopicVo> getTopic();

    /**
     * 获取所有题目根据time进行降序排序
     * @return 题目列表
     */
    List<TopicVo> getTopicSortByTime();

    /**
     * 根据兴趣列表里的学科获取题目并根据time进行降序排序
     * @param list 兴趣列表
     * @return
     */
    List<TopicVo> getTopicByObjectIdAndSortByTime(List<Interesting> list);

    /**
     * 根据用户id获取用户的兴趣
     * @param userId 用户id
     * @return 返回数据字典值中兴趣列表
     */
    List<DicValue> getInterestingSpecificInfoByUserId(String userId);

    /**
     * 获取所有科目
     * @return 科目列表
     */
    List<DicValue> getAllObject();

    /**
     * 根据用户id删除其兴趣
     * @param userId 用户id
     * @return
     */
    int deleteUserInteresting(String userId);

    /**
     * 插入用户兴趣根据用户id
     * @param id uuid
     * @param userId 用户id
     * @param objectId 用户兴趣id
     * @return
     */
    int setInterestingByUser(@Param("id")String id,@Param("userId") String userId, @Param("objectId")String objectId);

    /**
     * 查询用户的兴趣数量
     * @param userId 用户id
     * @return 用户兴趣数量
     */
    int selectInterestingByUserId(String userId);

    /**
     * 获取公告信息
     * @return
     */
    List<Announcement> getAnnouncementList();


}
